package startupcompanymanager2012.minigames.tictactoe;

// TTTComputerPlayer.java
// Einfacher Computerspieler zu Tic Tac Toe mit minimaler Intelligenz:
// Computer gewinnt immer, wenn er dazu nur noch einen Zug machen muss.
// Wenn der Gegner noch einen Zug zum Siegen braucht, dann macht der
// Computer diesen Zug, um den Gegner zu blockieren.
// Ansonsten waehlt er zufaellig einen Zug aus.

public class TTTComputerPlayer {	
	TTTComputerPlayer() {
	}
	
	public int siegInEinemZug(TTT ttt, int aktuellerSpieler) {
		// gibt Zug (Feld) zum Gewinn zurueck oder -1 falls kein Sieg in 1 Zug moeglich
		for (int i =0; i <9; i++) {	
			if(ttt.spielfeld[i] == TTT.LEER) {
				// Feld ist leer, mache eine Zug darauf und teste, ob gewonnen 
				ttt.spielfeld[i] = aktuellerSpieler;
				if( ttt.istSpielFertig() == aktuellerSpieler) {
					ttt.spielfeld[i] = TTT.LEER; 
					return i;
				}
				ttt.spielfeld[i] = TTT.LEER;
			}
		}
		return -1;
	}
	
	public int besterZug(TTT ttt) {
		int feld;
		// Teste, ob Computer in 1 Zug gewinnen kann
		if((feld = siegInEinemZug(ttt, ttt.getAktuellerSpieler())) != -1)
			return feld;
		
		// Teste, ob Gegner in 1 Zug gewinnen kann (und ziehe ggf. dorthin)
		if((feld = siegInEinemZug(ttt, ttt.getGegner(ttt.getAktuellerSpieler()))) != -1)
			return feld;

		// Computer kann in 1 Zug nicht gewinnen
		// mach einen Zufallszug
		do	{ 
			feld = (int)(Math.random()*9); // 0.0 <= Math.random() < 1		
		}  while(ttt.spielfeld[feld] != TTT.LEER);
		
		return feld;
	}
}

	